package com.it.service;

import java.util.List;

/**
 * RAG（检索增强生成）服务接口
 * 负责处理知识库文件的向量化存储和检索
 */
public interface RagService {

    /**
     * 根据知识库编码构建向量数据库
     * 将指定知识库下的所有文件内容向量化并存储到向量数据库中
     *
     * @param knowledgeCode 知识库编码
     * @return 成功处理的文件数量
     */
    int buildVectorStore(String knowledgeCode);

    /**
     * 根据查询内容在向量数据库中检索相关文档
     *
     * @param query 查询内容
     * @param knowledgeCode 知识库编码（用于过滤特定知识库的内容）
     * @param topK 返回最相关的文档数量
     * @return 相关文档内容列表
     */
    List<String> searchSimilarDocuments(String query, String knowledgeCode, int topK);

    /**
     * 清空指定知识库的向量数据
     *
     * @param knowledgeCode 知识库编码
     */
    void clearVectorStore(String knowledgeCode);

    /**
     * 检查指定知识库是否已经构建了向量数据库
     *
     * @param knowledgeCode 知识库编码
     * @return 是否已构建
     */
    boolean isVectorStoreBuilt(String knowledgeCode);
}